{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import sys\n",
    "import os\n",
    "from os.path import dirname, realpath, join\n",
    "base_dir = dirname(dirname(os.getcwd()))\n",
    "import itertools\n",
    "import pandas as pd\n",
    "from os.path import join\n",
    "base_dir\n",
    "\n",
    "sys.path.insert(0, base_dir)\n",
    "from config_path import PROSTATE_DATA_PATH, PLOTS_PATH, GENE_PATH, PROSTATE_LOG_PATH, BASE_PATH\n",
    "from data.data_access import Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "from os.path import join\n",
    "import numpy as np\n",
    "from matplotlib import pyplot as plt\n",
    "from scipy.optimize import curve_fit\n",
    "import matplotlib.patches as mpatches\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## normalized cell viability"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# normalize by the average "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "filename = join(PROSTATE_DATA_PATH, 'functional/revision/KD MDM4 proliferation raw data of 3 experiments in 4 cell lines in triplicates.xls')\n",
    "df = pd.read_excel(filename, sheet_name='process', header=[0], index_col=None)\n",
    "del df['Total cells']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>cell line</th>\n",
       "      <th>Sample ID</th>\n",
       "      <th>Viable cells</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>C42</td>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.40290</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>C42</td>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.53750</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>C42</td>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.54700</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>C42</td>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.57540</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>C42</td>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.56590</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>C42</td>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.50070</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>C42</td>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.03791</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>C42</td>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.05261</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>C42</td>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.03371</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>C42</td>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.03371</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>C42</td>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.03051</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>C42</td>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.04311</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>LNCAP</td>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.15150</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>LNCAP</td>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.15360</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>LNCAP</td>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.17990</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>LNCAP</td>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.19150</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>LNCAP</td>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.16000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>LNCAP</td>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.17470</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>LNCAP</td>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.06101</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>LNCAP</td>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.05261</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>LNCAP</td>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.04941</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>LNCAP</td>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.04521</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>LNCAP</td>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.06101</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>LNCAP</td>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.05571</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>LNCAP Abl</td>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.02500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>LNCAP Abl</td>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.03500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>LNCAP Abl</td>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.02400</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>LNCAP Abl</td>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.03600</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>LNCAP Abl</td>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.02100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>LNCAP Abl</td>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.01500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>LNCAP Abl</td>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.00600</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>LNCAP Abl</td>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.01400</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>LNCAP Abl</td>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.01500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>LNCAP Abl</td>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.01400</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>LNCAP Abl</td>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.01400</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>LNCAP Abl</td>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.00700</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>LNCAP 95</td>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.13000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37</th>\n",
       "      <td>LNCAP 95</td>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.14000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38</th>\n",
       "      <td>LNCAP 95</td>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.12000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39</th>\n",
       "      <td>LNCAP 95</td>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.13000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>LNCAP 95</td>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.12000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>LNCAP 95</td>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.12000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>42</th>\n",
       "      <td>LNCAP 95</td>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.05900</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>43</th>\n",
       "      <td>LNCAP 95</td>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.04300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44</th>\n",
       "      <td>LNCAP 95</td>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.06600</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>LNCAP 95</td>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.04500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>46</th>\n",
       "      <td>LNCAP 95</td>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.04900</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>47</th>\n",
       "      <td>LNCAP 95</td>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.05800</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    cell line Sample ID  Viable cells\n",
       "0         C42    sgGFP3       0.40290\n",
       "1         C42    sgGFP3       0.53750\n",
       "2         C42    sgGFP3       0.54700\n",
       "3         C42    sgGFP4       0.57540\n",
       "4         C42    sgGFP4       0.56590\n",
       "5         C42    sgGFP4       0.50070\n",
       "6         C42  sgMDM4-1       0.03791\n",
       "7         C42  sgMDM4-1       0.05261\n",
       "8         C42  sgMDM4-1       0.03371\n",
       "9         C42  sgMDM4-2       0.03371\n",
       "10        C42  sgMDM4-2       0.03051\n",
       "11        C42  sgMDM4-2       0.04311\n",
       "12      LNCAP    sgGFP3       0.15150\n",
       "13      LNCAP    sgGFP3       0.15360\n",
       "14      LNCAP    sgGFP3       0.17990\n",
       "15      LNCAP    sgGFP4       0.19150\n",
       "16      LNCAP    sgGFP4       0.16000\n",
       "17      LNCAP    sgGFP4       0.17470\n",
       "18      LNCAP  sgMDM4-1       0.06101\n",
       "19      LNCAP  sgMDM4-1       0.05261\n",
       "20      LNCAP  sgMDM4-1       0.04941\n",
       "21      LNCAP  sgMDM4-2       0.04521\n",
       "22      LNCAP  sgMDM4-2       0.06101\n",
       "23      LNCAP  sgMDM4-2       0.05571\n",
       "24  LNCAP Abl    sgGFP3       0.02500\n",
       "25  LNCAP Abl    sgGFP3       0.03500\n",
       "26  LNCAP Abl    sgGFP3       0.02400\n",
       "27  LNCAP Abl    sgGFP4       0.03600\n",
       "28  LNCAP Abl    sgGFP4       0.02100\n",
       "29  LNCAP Abl    sgGFP4       0.01500\n",
       "30  LNCAP Abl  sgMDM4-1       0.00600\n",
       "31  LNCAP Abl  sgMDM4-1       0.01400\n",
       "32  LNCAP Abl  sgMDM4-1       0.01500\n",
       "33  LNCAP Abl  sgMDM4-2       0.01400\n",
       "34  LNCAP Abl  sgMDM4-2       0.01400\n",
       "35  LNCAP Abl  sgMDM4-2       0.00700\n",
       "36   LNCAP 95    sgGFP3       0.13000\n",
       "37   LNCAP 95    sgGFP3       0.14000\n",
       "38   LNCAP 95    sgGFP3       0.12000\n",
       "39   LNCAP 95    sgGFP4       0.13000\n",
       "40   LNCAP 95    sgGFP4       0.12000\n",
       "41   LNCAP 95    sgGFP4       0.12000\n",
       "42   LNCAP 95  sgMDM4-1       0.05900\n",
       "43   LNCAP 95  sgMDM4-1       0.04300\n",
       "44   LNCAP 95  sgMDM4-1       0.06600\n",
       "45   LNCAP 95  sgMDM4-2       0.04500\n",
       "46   LNCAP 95  sgMDM4-2       0.04900\n",
       "47   LNCAP 95  sgMDM4-2       0.05800"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Viable cells</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>cell line</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>C42</th>\n",
       "      <td>0.495800</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LNCAP</th>\n",
       "      <td>0.161667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LNCAP 95</th>\n",
       "      <td>0.130000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LNCAP Abl</th>\n",
       "      <td>0.028000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           Viable cells\n",
       "cell line              \n",
       "C42            0.495800\n",
       "LNCAP          0.161667\n",
       "LNCAP 95       0.130000\n",
       "LNCAP Abl      0.028000"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "normalizing_frame = df[df['Sample ID']=='sgGFP3'].groupby(['cell line']).mean()\n",
    "# ['mean'].to_frame()\n",
    "normalizing_frame"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Viable cells</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>cell line</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>C42</th>\n",
       "      <td>0.495800</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LNCAP</th>\n",
       "      <td>0.161667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LNCAP 95</th>\n",
       "      <td>0.130000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LNCAP Abl</th>\n",
       "      <td>0.028000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           Viable cells\n",
       "cell line              \n",
       "C42            0.495800\n",
       "LNCAP          0.161667\n",
       "LNCAP 95       0.130000\n",
       "LNCAP Abl      0.028000"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "normalizing_frame"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>cell line</th>\n",
       "      <th>Sample ID</th>\n",
       "      <th>Viable cells</th>\n",
       "      <th>Viable cells_base</th>\n",
       "      <th>Normalized Viable cells</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>C42</td>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.40290</td>\n",
       "      <td>0.495800</td>\n",
       "      <td>0.812626</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>C42</td>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.53750</td>\n",
       "      <td>0.495800</td>\n",
       "      <td>1.084107</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>C42</td>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.54700</td>\n",
       "      <td>0.495800</td>\n",
       "      <td>1.103267</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>C42</td>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.57540</td>\n",
       "      <td>0.495800</td>\n",
       "      <td>1.160549</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>C42</td>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.56590</td>\n",
       "      <td>0.495800</td>\n",
       "      <td>1.141388</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>C42</td>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.50070</td>\n",
       "      <td>0.495800</td>\n",
       "      <td>1.009883</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>C42</td>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.03791</td>\n",
       "      <td>0.495800</td>\n",
       "      <td>0.076462</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>C42</td>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.05261</td>\n",
       "      <td>0.495800</td>\n",
       "      <td>0.106111</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>C42</td>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.03371</td>\n",
       "      <td>0.495800</td>\n",
       "      <td>0.067991</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>C42</td>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.03371</td>\n",
       "      <td>0.495800</td>\n",
       "      <td>0.067991</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>C42</td>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.03051</td>\n",
       "      <td>0.495800</td>\n",
       "      <td>0.061537</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>C42</td>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.04311</td>\n",
       "      <td>0.495800</td>\n",
       "      <td>0.086950</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>LNCAP</td>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.15150</td>\n",
       "      <td>0.161667</td>\n",
       "      <td>0.937113</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>LNCAP</td>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.15360</td>\n",
       "      <td>0.161667</td>\n",
       "      <td>0.950103</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>LNCAP</td>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.17990</td>\n",
       "      <td>0.161667</td>\n",
       "      <td>1.112784</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>LNCAP</td>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.19150</td>\n",
       "      <td>0.161667</td>\n",
       "      <td>1.184536</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>LNCAP</td>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.16000</td>\n",
       "      <td>0.161667</td>\n",
       "      <td>0.989691</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>LNCAP</td>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.17470</td>\n",
       "      <td>0.161667</td>\n",
       "      <td>1.080619</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>LNCAP</td>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.06101</td>\n",
       "      <td>0.161667</td>\n",
       "      <td>0.377381</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>LNCAP</td>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.05261</td>\n",
       "      <td>0.161667</td>\n",
       "      <td>0.325423</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>LNCAP</td>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.04941</td>\n",
       "      <td>0.161667</td>\n",
       "      <td>0.305629</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>LNCAP</td>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.04521</td>\n",
       "      <td>0.161667</td>\n",
       "      <td>0.279649</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>LNCAP</td>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.06101</td>\n",
       "      <td>0.161667</td>\n",
       "      <td>0.377381</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>LNCAP</td>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.05571</td>\n",
       "      <td>0.161667</td>\n",
       "      <td>0.344598</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>LNCAP Abl</td>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.02500</td>\n",
       "      <td>0.028000</td>\n",
       "      <td>0.892857</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>LNCAP Abl</td>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.03500</td>\n",
       "      <td>0.028000</td>\n",
       "      <td>1.250000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>LNCAP Abl</td>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.02400</td>\n",
       "      <td>0.028000</td>\n",
       "      <td>0.857143</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>LNCAP Abl</td>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.03600</td>\n",
       "      <td>0.028000</td>\n",
       "      <td>1.285714</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>LNCAP Abl</td>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.02100</td>\n",
       "      <td>0.028000</td>\n",
       "      <td>0.750000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>LNCAP Abl</td>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.01500</td>\n",
       "      <td>0.028000</td>\n",
       "      <td>0.535714</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>LNCAP Abl</td>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.00600</td>\n",
       "      <td>0.028000</td>\n",
       "      <td>0.214286</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>LNCAP Abl</td>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.01400</td>\n",
       "      <td>0.028000</td>\n",
       "      <td>0.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>LNCAP Abl</td>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.01500</td>\n",
       "      <td>0.028000</td>\n",
       "      <td>0.535714</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>LNCAP Abl</td>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.01400</td>\n",
       "      <td>0.028000</td>\n",
       "      <td>0.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>LNCAP Abl</td>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.01400</td>\n",
       "      <td>0.028000</td>\n",
       "      <td>0.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>LNCAP Abl</td>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.00700</td>\n",
       "      <td>0.028000</td>\n",
       "      <td>0.250000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>LNCAP 95</td>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.13000</td>\n",
       "      <td>0.130000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37</th>\n",
       "      <td>LNCAP 95</td>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.14000</td>\n",
       "      <td>0.130000</td>\n",
       "      <td>1.076923</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38</th>\n",
       "      <td>LNCAP 95</td>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.12000</td>\n",
       "      <td>0.130000</td>\n",
       "      <td>0.923077</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39</th>\n",
       "      <td>LNCAP 95</td>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.13000</td>\n",
       "      <td>0.130000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>LNCAP 95</td>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.12000</td>\n",
       "      <td>0.130000</td>\n",
       "      <td>0.923077</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>LNCAP 95</td>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.12000</td>\n",
       "      <td>0.130000</td>\n",
       "      <td>0.923077</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>42</th>\n",
       "      <td>LNCAP 95</td>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.05900</td>\n",
       "      <td>0.130000</td>\n",
       "      <td>0.453846</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>43</th>\n",
       "      <td>LNCAP 95</td>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.04300</td>\n",
       "      <td>0.130000</td>\n",
       "      <td>0.330769</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44</th>\n",
       "      <td>LNCAP 95</td>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.06600</td>\n",
       "      <td>0.130000</td>\n",
       "      <td>0.507692</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>LNCAP 95</td>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.04500</td>\n",
       "      <td>0.130000</td>\n",
       "      <td>0.346154</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>46</th>\n",
       "      <td>LNCAP 95</td>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.04900</td>\n",
       "      <td>0.130000</td>\n",
       "      <td>0.376923</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>47</th>\n",
       "      <td>LNCAP 95</td>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.05800</td>\n",
       "      <td>0.130000</td>\n",
       "      <td>0.446154</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    cell line Sample ID  Viable cells  Viable cells_base  \\\n",
       "0         C42    sgGFP3       0.40290           0.495800   \n",
       "1         C42    sgGFP3       0.53750           0.495800   \n",
       "2         C42    sgGFP3       0.54700           0.495800   \n",
       "3         C42    sgGFP4       0.57540           0.495800   \n",
       "4         C42    sgGFP4       0.56590           0.495800   \n",
       "5         C42    sgGFP4       0.50070           0.495800   \n",
       "6         C42  sgMDM4-1       0.03791           0.495800   \n",
       "7         C42  sgMDM4-1       0.05261           0.495800   \n",
       "8         C42  sgMDM4-1       0.03371           0.495800   \n",
       "9         C42  sgMDM4-2       0.03371           0.495800   \n",
       "10        C42  sgMDM4-2       0.03051           0.495800   \n",
       "11        C42  sgMDM4-2       0.04311           0.495800   \n",
       "12      LNCAP    sgGFP3       0.15150           0.161667   \n",
       "13      LNCAP    sgGFP3       0.15360           0.161667   \n",
       "14      LNCAP    sgGFP3       0.17990           0.161667   \n",
       "15      LNCAP    sgGFP4       0.19150           0.161667   \n",
       "16      LNCAP    sgGFP4       0.16000           0.161667   \n",
       "17      LNCAP    sgGFP4       0.17470           0.161667   \n",
       "18      LNCAP  sgMDM4-1       0.06101           0.161667   \n",
       "19      LNCAP  sgMDM4-1       0.05261           0.161667   \n",
       "20      LNCAP  sgMDM4-1       0.04941           0.161667   \n",
       "21      LNCAP  sgMDM4-2       0.04521           0.161667   \n",
       "22      LNCAP  sgMDM4-2       0.06101           0.161667   \n",
       "23      LNCAP  sgMDM4-2       0.05571           0.161667   \n",
       "24  LNCAP Abl    sgGFP3       0.02500           0.028000   \n",
       "25  LNCAP Abl    sgGFP3       0.03500           0.028000   \n",
       "26  LNCAP Abl    sgGFP3       0.02400           0.028000   \n",
       "27  LNCAP Abl    sgGFP4       0.03600           0.028000   \n",
       "28  LNCAP Abl    sgGFP4       0.02100           0.028000   \n",
       "29  LNCAP Abl    sgGFP4       0.01500           0.028000   \n",
       "30  LNCAP Abl  sgMDM4-1       0.00600           0.028000   \n",
       "31  LNCAP Abl  sgMDM4-1       0.01400           0.028000   \n",
       "32  LNCAP Abl  sgMDM4-1       0.01500           0.028000   \n",
       "33  LNCAP Abl  sgMDM4-2       0.01400           0.028000   \n",
       "34  LNCAP Abl  sgMDM4-2       0.01400           0.028000   \n",
       "35  LNCAP Abl  sgMDM4-2       0.00700           0.028000   \n",
       "36   LNCAP 95    sgGFP3       0.13000           0.130000   \n",
       "37   LNCAP 95    sgGFP3       0.14000           0.130000   \n",
       "38   LNCAP 95    sgGFP3       0.12000           0.130000   \n",
       "39   LNCAP 95    sgGFP4       0.13000           0.130000   \n",
       "40   LNCAP 95    sgGFP4       0.12000           0.130000   \n",
       "41   LNCAP 95    sgGFP4       0.12000           0.130000   \n",
       "42   LNCAP 95  sgMDM4-1       0.05900           0.130000   \n",
       "43   LNCAP 95  sgMDM4-1       0.04300           0.130000   \n",
       "44   LNCAP 95  sgMDM4-1       0.06600           0.130000   \n",
       "45   LNCAP 95  sgMDM4-2       0.04500           0.130000   \n",
       "46   LNCAP 95  sgMDM4-2       0.04900           0.130000   \n",
       "47   LNCAP 95  sgMDM4-2       0.05800           0.130000   \n",
       "\n",
       "    Normalized Viable cells  \n",
       "0                  0.812626  \n",
       "1                  1.084107  \n",
       "2                  1.103267  \n",
       "3                  1.160549  \n",
       "4                  1.141388  \n",
       "5                  1.009883  \n",
       "6                  0.076462  \n",
       "7                  0.106111  \n",
       "8                  0.067991  \n",
       "9                  0.067991  \n",
       "10                 0.061537  \n",
       "11                 0.086950  \n",
       "12                 0.937113  \n",
       "13                 0.950103  \n",
       "14                 1.112784  \n",
       "15                 1.184536  \n",
       "16                 0.989691  \n",
       "17                 1.080619  \n",
       "18                 0.377381  \n",
       "19                 0.325423  \n",
       "20                 0.305629  \n",
       "21                 0.279649  \n",
       "22                 0.377381  \n",
       "23                 0.344598  \n",
       "24                 0.892857  \n",
       "25                 1.250000  \n",
       "26                 0.857143  \n",
       "27                 1.285714  \n",
       "28                 0.750000  \n",
       "29                 0.535714  \n",
       "30                 0.214286  \n",
       "31                 0.500000  \n",
       "32                 0.535714  \n",
       "33                 0.500000  \n",
       "34                 0.500000  \n",
       "35                 0.250000  \n",
       "36                 1.000000  \n",
       "37                 1.076923  \n",
       "38                 0.923077  \n",
       "39                 1.000000  \n",
       "40                 0.923077  \n",
       "41                 0.923077  \n",
       "42                 0.453846  \n",
       "43                 0.330769  \n",
       "44                 0.507692  \n",
       "45                 0.346154  \n",
       "46                 0.376923  \n",
       "47                 0.446154  "
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "normalized_df = df.join(normalizing_frame, on=['cell line'], rsuffix = '_base')\n",
    "normalized_df['Normalized Viable cells'] = normalized_df['Viable cells']/normalized_df['Viable cells_base']\n",
    "normalized_df\n",
    "# normalized_df['Normalized Cell Count'] = normalized_df['Viable cells']/normalized_df['Viable cells']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEKCAYAAAD9xUlFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzt3Xl8VPXZ///XRRAQBSkElwpp1B+IICFiRFtsBUUFteCCCq6oFfQuUjdocd9oK1pb9Wfrja2C1gJqpVKL4gqKyy2gYVVbighBUwsKCsgSuL5/nMkwhGRyksyZySTv5+Mxj8xZ5zqHMFfO55zP9TF3R0REBKBJpgMQEZH6Q0lBRETilBRERCROSUFEROKUFEREJE5JQURE4pQUREQkTklBRETilBRERCSuaaYDqKnc3FzPz8/PdBgiIlll/vz5a9y9fXXrZV1SyM/PZ968eZkOQ0Qkq5jZp2HWU/ORiIjERZYUzOxRM/vCzBZXsfx8M1sYe71tZj2iikVERMKJ8kphItA/yfJPgOPcvQC4E5gQYSwiIhJCZPcU3P0NM8tPsvzthMl3gQ5RxSIiIuHUl3sKlwEvZDoIEZHGLuNPH5lZX4KkcGySdYYDwwHy8vLSFJmISOOT0SsFMysA/ggMcve1Va3n7hPcvcjdi9q3r/YxWxERqaWMJQUzywOeBS50939mKg4REdkpsuYjM5sM9AFyzawEuBXYA8DdHwZuAdoBvzczgDJ3L4oqHpH6bsyYMZSWlrL//vszfvz4TIcjjVSUTx8NrWb5T4CfRPX5UdJ/XolCaWkpq1evrtM+9LspdZXxG83ZKBX/eSWgL7HU0u+m1JWSgmSUvsRE6pf60k9BRETqASUFERGJU1IQEZE4JQUREYlrdDea9bSLiEjVGl1S0NMuIiJVU/ORiIjEKSmIiEickoKIiMQpKYiISFyju9Ecxso7uiddXvZlW6ApZV9+WuW6ebcsiiAyEZFo6UpBRETilBRERCROzUdSJ2E6AyZrjgvTFAdqjhNJFyUFqRN1BhRpWNR8JCIicbpSEJEGSXXOakdJQUQaJDVt1o6aj0REJE5JQURE4pQUREQkTklBRETidKO5FnJb7ADKYj9FRBoOJYVauL5gXaZDEBGJRGTNR2b2qJl9YWaLq1huZvaAmS0zs4Vm1jOqWEREJJwo7ylMBPonWT4A6BR7DQf+EGEsIiISQmRJwd3fAL5Mssog4HEPvAu0MbMDoopHRESql8mnjw4EViVMl8TmiYhIhmTyRrNVMs8rXdFsOEETE3l5edXu+MjRj1e5rNWab8gBVq75psr1prWq9iMajWTnEup+Phvbk1x1/d0EmH/PRRFElp3qej51LneXyaRQAnRMmO4AfFbZiu4+AZgAUFRUVGnikOykJ7lE6pdMJoXpwEgzmwIcDax3988zGI+IyC4aY6XVyJKCmU0G+gC5ZlYC3ArsAeDuDwMzgFOAZcAm4JKoYhERqY3GWGk1sqTg7kOrWe7AT6P6fBERqTnVPhIRkTglBRERiVNSEBGROCUFERGJU5VUEWm0Vt7RPenysi/bAk0p+/LTKtfNu2VRBJFlTo2uFMzsO2ZWEFUwIiKSWdUmBTObZWatzawtsAB4zMzuiz40ERFJtzBXCvu4+9fAmcBj7n4k0C/asERE6mZHs73Y3rw1O5rtlelQskqYewpNYyWtzwFujDgeEZGU2NjppEyHkJXCXCncAcwElrn7XDM7GPhXtGGJiEgmVHul4O5PA08nTC8HzooyKMke5ZfmukQXaRiqTApm9iBVjG8A4O6jIolIsoou0aUha2zjfUDyK4V5aYtCRKQeaozjfVSZFNx9UjoDERGRzEvWfPR3kjcfDYwkIhERyZhkzUf3pi0KERGpF5I1H80uf29mewJ57v5xWqISEZGMCFPm4sdAMfBibLrQzKZHHZiIiKRfmM5rtwG9gHUA7l4M5EcXkoiIZEqYMhdl7r7ezCIPJh3U2UpEpGphksJiMzsPyDGzTsAo4O1ow4qOOltJtks2BkBjrP8vqRWm+egqoBuwBfgLsB64OsqgREQkM8LUPtpEUB1VFVJFRBq4apOCmb0MnO3u62LT3wGmuPvJUQcX1rZt2ygpKWHz5s0A3HPGYXXa33r7XZ1j+vDDD+u8j/pg/OmHUbJuM4+9s5JvtmzPdDgiErEw9xRyyxMCgLt/ZWb7RhhTjZWUlNCqVSvy8/MxM3zVmjrt75Cc/9Q5pubfrVtiqi92rPwvbdt9wyXAA7M+yXQ4IhKxMPcUdphZXvmEmX2PJOUvMmHz5s20a9eOhvKEVH1iZjRr2YoObVpkOhQRSYMwSeFGYI6ZPWFmTwBvAGPD7NzM+pvZx2a2zMx+UcnyPDN73cw+MLOFZnZKzcLfZV+13VSqYWbo9Io0DtUmBXd/EegJTAWeAo5095nVbWdmOcBDwACgKzDUzLpWWO0m4Cl3PwIYAvy+ZuFH49f3/y9H9B1EUb8z6HXiWbz3/sJIP69Pnz7Mmxe+UvmwYcN45pln4tseeuihFBQU0KVLF0aOHMm6dY2v3G9DoDGFpT4Ic08Bd18DPF/DffciGMJzOYCZTQEGAUsTdw20jr3fB/ishp+RcsXz5/LCK2/w7otP07x5M9Z8+RVbt27LdFhJPfnkkxQVFbF161bGjh3LoEGDmD17dvUbSr2iPjRSH4RpPqqtA4FVCdMlsXmJbgMuMLMSYAZBn4iM+u8X/6Fd2zY0b94MgNy23+G7+wf31cf99g/0PuVceh5/Ov8z5jbcg1srJw4exuhb7+aEMy+mx3E/Zl7xIs4880w6derETTfdBMCKFSvo0qULF198MQUFBQwePJhNmzbt9vkvvfQS3//+9+nZsydnn302GzZsCB17s2bNGD9+PCtXrmTBggV1PRUi0ghFmRQqa4WueIN6KDDR3TsApwBPmNluMZnZcDObZ2bz/vvf/0YQ6k4/+FEfSj4r5fBjT2XU2Dt545258WVXDjuPt2ZM5f3X/sa3325mxss7/xpv1mwPXn12EpdfeA5nXzqKhx56iMWLFzNx4kTWrl0LwMcff8zw4cNZuHAhrVu35ve/37W1bM2aNdx111288sorvP/++xQVFXHffffVKP6cnBx69OjBRx99VIezICKNVaikYGbHmtklsfftzeygEJuVAB0Tpjuwe/PQZQT3KXD3d4AWQG7FHbn7BHcvcvei9u3bhwm51vbaa2/eefEpHhp/K7ntvsOFV17P41P/BsDst9/jh6cN5cgTzmD22++x9J/L4tudelIfALp16cxhnQ/hgAMOoHnz5hx88MGsWhVcMHXs2JHevXsDcMEFFzBnzpxdPvvdd99l6dKl9O7dm8LCQiZNmsSnn35a42Mov4IREampMJ3XbgWKgEOBx4A9gD8DvavZdC7QKZZAVhPcSD6vwjorgROAiWZ2GEFSiPZSIIScnByO+0EvjvtBLw7v0pk/P/0c5wwawM9uuJO3Zkyl44EHcOdvHmLzli3xbZo3C5qbmjSx+PtgugllZWXA7k9IVZx2d0488UQmT55c69i3b9/OokWLOOywhtFPQkTSK8yVwhnAQGAjgLt/BrSqbiN3LwNGAjOBDwmeMlpiZneYWflQntcBl5vZAmAyMMwz/GfuJ/9exrLlO/86X7DkI/I6fDeeAHLbfocNGzcx7R8v13jfK1eu5J133gFg8uTJHHvssbssP+aYY3jrrbdYtiy4Atm0aRP//Oc/Q+9/27ZtjB07lo4dO1JQUFDj+EREwjx9tNXd3cwcwMxCPy/n7jMIbiAnzrsl4f1Sqr/iSKtNGzfyk1tvYN3X39C0aQ6H5Ofx0PjbaLNPay45bzBH9juD73U4kCN7HF7jfR922GFMmjSJESNG0KlTJ6688spdlrdv356JEycydOhQtsSS0F133UXnzp2T7vf888+nefPmbNmyhX79+vHcc8/VODYREQiXFJ4ys/8F2pjZ5cClwCPRhpU53Qp6MGv6k5Uuu/3no7j956N2m//yMxPj78ubncrNmjULCJ4+atKkCQ8//PBu25evA3D88cczd+7c3dZJNHHizs9L3FZEpK7CVEm918xOBL4muK9wi7vXvO1ERETqvbCd114GlAjqID8/n8WLF2c6DBGRpKpMCmb2DZUXvjPA3b11JctERCSLVZkU3L3aJ4xERKRhCdV8ZGY9gWMJrhzmuPsHkUYlIiIZUW0/BTO7BZgEtCPobTzRzG6KOjAREUm/MJ3XhgJHufut7n4rcAxwfrRhNXwvvvgivXr1okuXLhQWFnLuueeycuVKICiNfdBBB1FYWEhhYSEPPPAAENys7t69Oz169OCkk06itLQUgP79+9OjRw+6devGFVdcwfbtGjZTRGonTPPRCoLyE5tj082Bf0cVUCpc+MCM6leqgbevOTKl+1u8eDFXXXUV06dPj5ejmD59OitWrCAvLxjk7p577mHw4MG7bfv666+Tm5vLDTfcwC9/+UseeOABnnrqKVq3bo27M3jwYJ5++mmGDBmS0phFpHFI9vTRgwT3ELYAS8zs5dj0icCcqrZrrDZu2sT5I65j9ef/YfuOHdxy+120atWKa6+9ltzcXHr27Mny5ct5/vnnufvuu7nhhht2qU80cODAJHvf3Y9+9KP4FUTr1sGDYGVlZWzdulWj0IlIrSVrPpoHzAemATcArwOzCIbnfCHyyLLMS6+/xQH778vcV57l/df+Rv/+/RkxYgQvvPACc+bMIbHk95IlS+jZs2fS/Y0ePTrefLRo0aLdlj///PN07949Pn3yySez77770qpVq0qvMEREwqgyKbj7pGSvdAaZDQ7v0onX3nyXG8fdx5z/m88nn3zCwQcfzEEHBVXGhw4dWul2a9eupbCwkM6dO3PvvffG599zzz0UFxdTXFy8y5d/3759KSws5Ouvv2bs2J1DZc+cOZPPP/+cLVu28Nprr0V0lCLS0IV5+qiTmT1jZkvNbHn5Kx3BZZNOh+TzzgtP0a1LJ27+1e+SFqXr1q0b77//PgDt2rWjuLiY4cOHhxpl7fXXX6e4uJjHH3+cNm3a7LKsRYsWDBw4UAXxRKTWwjx99BjwB6AM6As8DjwRZVDZ6LPSL2i5ZwvOO+vHXHPFMN5++22WL1/OihUrAJg6dWp83TFjxjBu3Dg+/PDD+LzKhuYMY8OGDXz++edAcE9hxowZdOnSpfYHIiKNWpinj/Z091fNzNz9U+A2M3sTuDXi2LLKko/+xdi77qWJNWGPPZry8B8n8vnnn9O/f39yc3Pp1Wtn5dTu3btz//33c9FFF/HNN9/Qrl078vLyuP3222v8uRs3bmTgwIFs2bKF7du3c/zxx3PFFVek8tBEpBEJkxQ2x8ZN/peZjSQYRW3faMOqmydGnVKn7Q/J+U+NtzmxT29O7LNzaIjm3+3Ghg0b+Oijj3B3fvrTn1JUVBRffuqpp3LqqadWuq/E0tiJyq86Eu23337VltoWEQkrTPPR1UBLYBRwJHAhcHGUQTUUjzzyCIWFhXTr1o3169czYsSITIckIpJUmPEUyv8M3QBcEm04Dcs111zDNddck+kwRERCS9Z57XfufrWZ/Z1KSmi7e816W4mISL2X7Eqh/Amje5OsIyIiDUiypNDXzL5w99lpi0ZERDIq2Y3mA4G3zewNM7vSzHLTFZSIiGRGsjIX1wB5wM1AAbDQzF4ws4vMTKOy1VEqS2eXGzhwIIcffnjaj0VEGo6kTx+5uwOzgdmxPgr9gF8DDxM8plov7f1Y3zptX7GXwn4/mVKn/VWU6tLZAM8++yx77713SuMUkcYn7HCc3YEhwLnAWoKqqZIgk6WzN2zYwH333ceECRM455xzUnpcItK4VNl8FCuEd7OZLQX+AmwCTnL3o939d2mLMEtksnT2zTffzHXXXUfLlvX24k1EskSyG80zCUZcO9fdu7v7OHdXddQqZKp0dnFxMcuWLeOMM86I9gBFpFGosvnI3Q+u687NrD9wP5AD/NHdf13JOucAtxF0kFvg7ufV9XMzobx09ouvvcHNv/odJ586qMp1y0tn9+jRI146+9577w1dOjs3d+eDYO+88w7z588nPz+fsrIyvvjiC/r06cOsWbNScVgi0siEqX1UK2aWAzwEDAC6AkPNrGuFdToBY4He7t6NoM5SVspU6ewrr7ySzz77jBUrVjBnzhw6d+6shCAitRbqRnMt9QKWlTc5mdkUYBCwNGGdy4GH3P0rAHf/IsJ4IpWp0tkiIqkUZVI4EFiVMF0CHF1hnc4AZvYWQRPTbe7+YsUdmdlwYDgQf2QzmQ2XvF67iGOyqXR2ovz8fBYvXlzj2EVEyiUriLeISgrhlXP3gmr2bZVtVsnndwL6AB2AN83scHdfV+GzJgATAIqKiqqMqb555JFHmDRpElu3buWII45Q6WwRqfeSXSmcFvv509jP8gJ55xM8nlqdEqBjwnQH4LNK1nnX3bcBn5jZxwRJokGMGqPS2SKSbZKVufg0Nvxmb3cf4+6LYq9fACeH2PdcoJOZHWRmzQg6v02vsM7fCMZ9JlZbqTOgx15FRDIkzNNHe5nZseUTZvYDYK/qNnL3MmAkQX+HD4Gn3H2Jmd1hZuXdd2cCa2Md5F4HRrv72poehIiIpEaYG82XAY+a2T4E9wTWA5eG2bm7zwBmVJh3S8J7B66NvUREJMPCDMc5H+hhZq0Bc/f10YclIpkyZswYSktL2X///Rk/fnymw5E0q7b5yMz2M7M/AVPdfb2ZdTWzy9IQW4M1ceJEzIxXX301Pm/atGmYGc888wwAffr04dBDD6WgoIAuXbowcuRI1q3b+VCWmXHhhRfGp8vKymjfvj2nnXYaiebOnUtOTk58vxW98cYb9OzZk6ZNm1a5jjQupaWlrF69erfS7NI4hGk+mgg8BtwYm/4nMBX4U0Qx1dnlf6u6xERtvHbWhJTuD4IObJMnT+aEE04AYMqUKfTo0WOXdZ588kmKiorYunUrY8eOZdCgQcyeHQyEt9dee7F48WK+/fZb9txzT15++WUOPPDAXbbfvn07P//5zzn55KqfC8jLy2PixIm71F0SkcYrzI3mXHd/CtgB8RvI2yONKgtt3LSJ0y+8kqP6nUnP409n6tSpzJgxgy5dunDssccyatSoXf6K/+EPf8h7773Htm3b2LBhA8uWLaOwsLDSfTdr1ozx48ezcuVKFixYEJ8/YMAA/vGPfwAwefLk3YruPfjgg5x11lnsu+++Vcadn59PQUEBTZpEVvFERLJImG+CjWbWjljHMzM7huBmsySoSelsCJp/+vXrx8yZM3nuueeqHU8hJyeHHj168NFHH8XnDRkyhClTprB582YWLlzI0Ufv7DC+evVqpk2bxhVXXJHaAxWRBi1MUriOoH/BIbFyFI8DoyKNKgvVpnR2+Zf6lClTqiytnSh4WGungoICVqxYweTJkznllFN2WXb11Vdz9913k5OTU4ejEqmdMWPGcNFFFzFmzJhMhyI1FOrpIzM7DjiUoHTFx7EeyJKgJqWzy/Xq1YvFixez55570rlz56Trbt++nUWLFu0yWhsEI7Zdf/31zJo1i7Vrd3bxmDdvHkOGDAFgzZo1zJgxg6ZNmzJ37tx4k1NxcXFND1PqudwWO4Cy2M/MKb9ZLdmn2qRgZv8G7nH3hxPmPe/upyXZrNH5rPQL2rbZh/PO+jF779WSP079R7x0dn5+/i6lsxP96le/okWLFkn3vW3bNm688UY6duxIQcGuJacuvfRS9tlnH7p3775LyexPPvkk/n7YsGGcdtppnH766Zx++umMGzeu9gcq9dr1BeuqX0kkiTBPH20D+prZ0cAId99KUAFVEtSkdHaiAQMGVLnP888/n+bNm7Nlyxb69evHc889t9s6HTp04Gc/+1mt4547dy5nnHEGX331FX//+9+59dZbWbJkSa33JyLZLUxS2OTu55rZGIIqpueQpHpqffDI6bt/edZE1KWzhw0bxrBhw3bbR2LJ7OoGyqlslLY+ffrQp0+fpPut6KijjqKkpCTpZ4lI4xEmKRiAu483s/kE9YraRhpVA6HS2SKSbT3EwySFxFpFr5rZycDF0YXUcKh0tohk2033ZIPsdHH3j4DVZtazwuLnow1LREQyIdmVwnUEYyj/ppJlDhwfSUQiIpIxVSYFd7889rNv+sIREZFMStZ8dGayDd392dSHIyIimZSszMWPk7zUca0O6lPp7Pvuu4+uXbtSUFDACSecwKeffprKQxWRLJOs+eiSdAaSSv89/6y6bV9h+pgpv6/T/ipTX0pnH3HEEcybN4+WLVvyhz/8gTFjxlTZ+1pEGr5Q9ZLN7FQzG2Nmt5S/og4s22Rr6ey+ffvSsmVLAI455hh1ZBNp5MKMvPYwcC5wFUFHtrOB70UcV9ZpCKWz//SnPyUtuyEiDV+YK4UfuPtFwFfufjvwfaBjtGFln2wvnf3nP/+ZefPmMXr06FDri0jDFKZH87exn5vM7LvAWuCg6ELKTtlcOvuVV15h3LhxzJ49m+bNm9fouEWkYQmTFJ43szbAPcD7BB3X/hhpVFkoW0tnf/DBB4wYMYIXX3wx6b0HEWkcwgyyc2fs7V/N7HmghbtrOM4KsrV09ujRo9mwYQNnn302AHl5eUyfPr3W+xOR1Ep3Qb0wg+zkAKcC+eXrmxnufl+0odVe+yf/WqftG1Pp7FdeeSXp54hIcr0f7J10ebN1zWhCE1atW1Xlum9d9VaV26e7oF6YG81/B4YB7YBWCS+pxiOPPEJhYSHdunVj/fr1Kp0tIvVemHsKHdy9oPrVdmdm/YH7gRzgj+7+6yrWGww8DRzl7vNq81n1kUpni0i2CZMUXjCzk9z9pZrsONbs9BBwIlACzDWz6e6+tMJ6rYBRwP/VZP8iUjupaO745dPJvzq+bZoDZnxbUsLsHx1X6TrHvTE7XMCSVmGaj94FppnZt2b2tZl9Y2Zfh9iuF7DM3ZfHxnWeAlT2nOadwHhgc+ioK1HxGX5JHXdHp1ekcQiTFH5D0GGtpbu3dvdW7t46xHYHAqsSpkti8+LM7Aigo7snHbTHzIab2Twzm1exZzBAixYtWLt2rRJDBNydrZu+oWRdnXK2iGSJMM1H/wIWe82/ca2SefF9mFkT4LcEN7GTcvcJwASAoqKi3eLo0KEDJSUl8VISpV/t/mROTWwPdSGUXNP1ocpK1XulX26gZN1mHntnZaZDEZE0CJMUPgdmmdkLwJbymSEeSS1h13IYHYDPEqZbAYfH9g2wPzDdzAbW9GbzHnvsES8nAXDB6MdrsvluprW6p07bA+TdsqjO+6gP6nouRaR6Vd13gXD3ZyB192jCJIVPYq9msVdYc4FOZnYQsBoYApxXvjDWAS63fNrMZgHXN6Snj0REsk3SpBB7gmhvd69xlTR3LzOzkcBMgkdSH3X3JWZ2BzDP3dVtVuqNdPcaFamvkiYFd99uZj1ru3N3nwHMqDCv0rEY3L1PbT9HGrdUfKGnu9eoSH0Vpvmo2MymE3Qu21g+U2M0S32hL3SR1AmTFNoSlMs+PmGeA0oKIiINTJgqqVk7VrOIiNRMmOE4O5jZNDP7wsz+Y2Z/NbMO6QhORCTbeUtnx1478JbZ0bk2TPPRY8BfCMZmBrggNu/EqIISEWkotvXelukQaiRMt9v27v6Yu5fFXhOB9hHHJSIiQBt32rrTJk1lfMJcKawxswuAybHpoQQ3nkXSJlllT1X1lIbsgu070vp5Ya4ULgXOAUoJSl4Mjs0TEZEGJszTRyuBgWmIRUREMqzKpGBmlfY8jnF3vzOCeEREJIOSXSlsrGTeXsBlBOM1KymIiDQwVSYFd/9N+fvYkJk/Ay4hGEHtN1VtJyIi2au6KqltgWuB84FJQE93/yodgYmE5S2dHWRP5yCR+izZPYV7gDMJRjzr7u51G85MJCLZ1jmoMSh/pj5dz9ZL6iS7UriOYKS1m4AbY6OjQTDMpoccp1kkK+hLLLXS/Wy9pE6yewoNY5BhkRD0JSYS0Be/iIjEKSmIiEhcmNpHItKI6Gmuxk1JQUR2oae5Gjc1H4mISJySgoiIxCkpiIhInJKCiIjEKSmIiEickoKIiMRFmhTMrL+ZfWxmy8zsF5Usv9bMlprZQjN71cy+F2U8IiKSXGRJwcxygIeAAUBXYKiZda2w2gdAkbsXAM8A46OKR0REqhfllUIvYJm7L3f3rQSD8wxKXMHdX3f3TbHJd4EOEcYjIiLViDIpHAisSpguic2rymXACxHGIyIi1YiyzIVVMq/SYipmdgFQBBxXxfLhwHCAvLy8VMUnIiIVRHmlUAJ0TJjuAHxWcSUz6wfcCAx09y2V7cjdJ7h7kbsXtW/fPpJgRUQk2qQwF+hkZgeZWTNgCDA9cQUzOwL4X4KE8EWEsYiISAiRJQV3LwNGAjOBD4Gn3H2Jmd1hZgNjq90D7A08bWbFZja9it2JiEgaRFo6291nADMqzLsl4X2/KD9fRERqRj2aRUQkTklBRETilBRERCROSUFEROKUFEREJE5JQURE4pQUREQkTklBRETilBRERCROSUFEROKUFEREJC7S2kdSuTFjxlBaWsr+++/P+PEagVRE6g8lhQwoLS1l9erVmQ5DRGQ3aj4SEZE4XSlkKTVBiUgUlBQi0vvB3lUua7auGU1owqp1q5Ku99ZVb1W5TE1QIhIFNR+JiEicrhTqsdk/Oq7KZd82zQEzvi0pSbrecW/MjiI0EWmgdKUgIiJxulLIAG/p7GAH3tIzHYqIyC6UFDJgW+9tdd5HG/ddfoqIpIKSQpa6YPuOTIcgIg2Q7imIiEickoKIiMQpKYiISJySgoiIxEWaFMysv5l9bGbLzOwXlSxvbmZTY8v/z8zyo4xHRESSiywpmFkO8BAwAOgKDDWzrhVWuwz4yt3/P+C3wN1RxSMiItWL8kqhF7DM3Ze7+1ZgCjCowjqDgEmx988AJ5iZRRiTiIgkEWVSOBBYlTBdEptX6TruXgasB9pFGJOIiCQRZee1yv7ir9j9Nsw6mNlwYHhscoOZfVzH2JL6Xmp2kwusqcsO+qQiinpw4VUfzmefVERQD84lpOR86nczpj78bkLazmfrGNsEAAAF90lEQVSow40yKZQAHROmOwCfVbFOiZk1BfYBvqy4I3efAEyIKM5ImNk8dy/KdBwNhc5n6uhcplZDO59RNh/NBTqZ2UFm1gwYAkyvsM504OLY+8HAa+4q5iMikimRXSm4e5mZjQRmAjnAo+6+xMzuAOa5+3TgT8ATZraM4AphSFTxiIhI9SItiOfuM4AZFebdkvB+M3B2lDFkUFY1d2UBnc/U0blMrQZ1Pk2tNSIiUk5lLkREJE5JoZbMbH8zm2Jm/zazpWY2w8w6x5a1NrPVZvb/x6Zbmtk/zOwjM1tiZr/ObPTpZ2YbKpl3m5ltMrN9K1sv2TmOLb/GzDab2T4J8/qY2Xoz+8DMPjSzW6M8rijUx3NVxfbDyn/HwxxDJtW3c2pmd5vZ4tjr3IT5E83sEzMrjr0KU3H8NaGkUAuxXtfTgFnufoi7dwVuAPaLrXInMLvCZve6exfgCKC3mQ1IW8D12xrguoozQ5xjgKEET7mdUWHzN939CKAIuMDMjowk8vTL5Lmqavtsl/ZzamanAj2BQuBoYLSZtU5YZbS7F8ZexXU7vJpTUqidvsA2d3+4fIa7F7v7m7FfgP2AlxKWbXL312PvtwLvE/TbEHgUONfM2laYX+U5BjCzQ4C9gZsI/nPuxt03AvOBQ6IIPAMycq6q2b6jmb1oQeHLrLsqIzPntCsw293LYussAPqn4mBSQUmhdg4n+MfehZk1AX4DjK5qQzNrA/wYeDWy6LLLBoL/mD+rML/Sc5xgKDAZeBM4NLEJoJyZtQOOAZakJtSMy9S5SrZ9L+B8gr96zzazbOvElYlzugAYEGtWziVIQIkdfceZ2UIz+62ZNa/R0aSAkkJq/Q8ww91XVbbQgl7bk4EH3H15WiOr3x4ALq5wCV2dIcAUd98BPMuujzb/0Mw+ILha+7W7N5SkAJk5V8m2f9nd17r7t7Flx9YgrvoirefU3V8ieFT/bYLvg3eAstjisUAX4CigLfDzmh9O3UTaT6EBW0LQA7ui7xP8QvwPwaVlMzPb4O7lY0lMAP7l7r9LU5xZwd3XmdlfCJJquarOMWZWAHQCXg6afmkGLCco1Q5Bm+5p0UWcOek+VyG2r/hMe9Y9456J3z93HweMi+3vL8C/YvM/j62yxcweA66vzTHVha4Uauc1oLmZXV4+w8yOAia4e5675xP8Yz5enhDM7C6C2k5XZyDebHAfMIKdf6hUeo7N7DiCS/fb3D0/9voucKCZpai+Wb2XznNV3fYnmllbM9sTOB14KwXHlwlpO6dmlhNrWipPMAXE7kGa2QGxn0ZwPhen5OhqQEmhFmL1mc4g+A/xbzNbAtzG7gX/ADCzDsCNBDeY3o89avaTdMVbT7Q0s5KE17WJC919DcHTHs1j08nO8ZDYuomm0XDKpNSnc1Xd9nOAJ4Bi4K/uPi/kftOtPp3TPYA3zWwpQevBBbGhAwCeNLNFwCKC6qt31fA460w9mkVEJE5XCiIiEqekICIicUoKIiISp6QgIiJxSgoiIhKnpCBSA5ZQGdSCKpu7dS5KnG9md5hZv3THKVJb6tEsEqHEkQZFsoGuFKTRM7OLYgXIFpjZE7F57c3sr2Y2N/bqXct9TzSzwbH3K8zsdjN738wWmVmX2Py9zOzR2Od8YGaDUnd0IjWjKwVp1MysG0Fv897uviahhPL9wG/dfY6Z5QEzgcNS8JFr3L1nrD7W9cBPYp//mrtfGqui+56ZvRIrqyySVkoK0tgdDzwTK3OAu38Zm98P6BoreAbQ2sxapeDzno39nA+cGXt/EjAw4f5ECyAP+DAFnydSI0oK0tgZlVf2bAJ8P1YSeufKO5NEbW2J/dzOzv9/Bpzl7h/XdecidaV7CtLYvQqck1C1srz56CVgZPlKFu1YuTOBq2KVMTGzIyL8LJGklBSkUYsNgDIOmG1mCwhKKAOMAopiN6CXAldEGMadBJUzF5rZ4ti0SEaoSqqIiMTpSkFEROKUFEREJE5JQURE4pQUREQkTklBRETilBRERCROSUFEROKUFEREJO7/AZQsDezUwxGHAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.barplot(x=\"cell line\", y=\"Normalized Viable cells\", hue=\"Sample ID\", data=normalized_df, ci='sd');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## original"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>cell line</th>\n",
       "      <th>Sample ID</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>C42</td>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.495800</td>\n",
       "      <td>0.080594</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>C42</td>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.547333</td>\n",
       "      <td>0.040664</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>C42</td>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.041410</td>\n",
       "      <td>0.009924</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>C42</td>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.035777</td>\n",
       "      <td>0.006549</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>LNCAP</td>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.161667</td>\n",
       "      <td>0.015825</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>LNCAP</td>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.175400</td>\n",
       "      <td>0.015762</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>LNCAP</td>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.054343</td>\n",
       "      <td>0.005991</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>LNCAP</td>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.053977</td>\n",
       "      <td>0.008041</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>LNCAP 95</td>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.130000</td>\n",
       "      <td>0.010000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>LNCAP 95</td>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.123333</td>\n",
       "      <td>0.005774</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>LNCAP 95</td>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.056000</td>\n",
       "      <td>0.011790</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>LNCAP 95</td>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.050667</td>\n",
       "      <td>0.006658</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>LNCAP Abl</td>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.028000</td>\n",
       "      <td>0.006083</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>LNCAP Abl</td>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.024000</td>\n",
       "      <td>0.010817</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>LNCAP Abl</td>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.011667</td>\n",
       "      <td>0.004933</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>LNCAP Abl</td>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.011667</td>\n",
       "      <td>0.004041</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    cell line Sample ID      mean       std\n",
       "0         C42    sgGFP3  0.495800  0.080594\n",
       "1         C42    sgGFP4  0.547333  0.040664\n",
       "2         C42  sgMDM4-1  0.041410  0.009924\n",
       "3         C42  sgMDM4-2  0.035777  0.006549\n",
       "4       LNCAP    sgGFP3  0.161667  0.015825\n",
       "5       LNCAP    sgGFP4  0.175400  0.015762\n",
       "6       LNCAP  sgMDM4-1  0.054343  0.005991\n",
       "7       LNCAP  sgMDM4-2  0.053977  0.008041\n",
       "8    LNCAP 95    sgGFP3  0.130000  0.010000\n",
       "9    LNCAP 95    sgGFP4  0.123333  0.005774\n",
       "10   LNCAP 95  sgMDM4-1  0.056000  0.011790\n",
       "11   LNCAP 95  sgMDM4-2  0.050667  0.006658\n",
       "12  LNCAP Abl    sgGFP3  0.028000  0.006083\n",
       "13  LNCAP Abl    sgGFP4  0.024000  0.010817\n",
       "14  LNCAP Abl  sgMDM4-1  0.011667  0.004933\n",
       "15  LNCAP Abl  sgMDM4-2  0.011667  0.004041"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dd= df.groupby(['cell line','Sample ID']).agg([np.mean, np.std])\n",
    "dd.columns= dd.columns.droplevel(0)\n",
    "dd=dd.reset_index()\n",
    "dd\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sample ID</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>normalize</th>\n",
       "      <th>Normalized Cell Count</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>cell line</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>C42</th>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.495800</td>\n",
       "      <td>0.080594</td>\n",
       "      <td>0.495800</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C42</th>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.547333</td>\n",
       "      <td>0.040664</td>\n",
       "      <td>0.495800</td>\n",
       "      <td>1.103940</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C42</th>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.041410</td>\n",
       "      <td>0.009924</td>\n",
       "      <td>0.495800</td>\n",
       "      <td>0.083522</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C42</th>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.035777</td>\n",
       "      <td>0.006549</td>\n",
       "      <td>0.495800</td>\n",
       "      <td>0.072159</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LNCAP</th>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.161667</td>\n",
       "      <td>0.015825</td>\n",
       "      <td>0.161667</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LNCAP</th>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.175400</td>\n",
       "      <td>0.015762</td>\n",
       "      <td>0.161667</td>\n",
       "      <td>1.084948</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LNCAP</th>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.054343</td>\n",
       "      <td>0.005991</td>\n",
       "      <td>0.161667</td>\n",
       "      <td>0.336144</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LNCAP</th>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.053977</td>\n",
       "      <td>0.008041</td>\n",
       "      <td>0.161667</td>\n",
       "      <td>0.333876</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LNCAP 95</th>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.130000</td>\n",
       "      <td>0.010000</td>\n",
       "      <td>0.130000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LNCAP 95</th>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.123333</td>\n",
       "      <td>0.005774</td>\n",
       "      <td>0.130000</td>\n",
       "      <td>0.948718</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LNCAP 95</th>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.056000</td>\n",
       "      <td>0.011790</td>\n",
       "      <td>0.130000</td>\n",
       "      <td>0.430769</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LNCAP 95</th>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.050667</td>\n",
       "      <td>0.006658</td>\n",
       "      <td>0.130000</td>\n",
       "      <td>0.389744</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LNCAP Abl</th>\n",
       "      <td>sgGFP3</td>\n",
       "      <td>0.028000</td>\n",
       "      <td>0.006083</td>\n",
       "      <td>0.028000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LNCAP Abl</th>\n",
       "      <td>sgGFP4</td>\n",
       "      <td>0.024000</td>\n",
       "      <td>0.010817</td>\n",
       "      <td>0.028000</td>\n",
       "      <td>0.857143</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LNCAP Abl</th>\n",
       "      <td>sgMDM4-1</td>\n",
       "      <td>0.011667</td>\n",
       "      <td>0.004933</td>\n",
       "      <td>0.028000</td>\n",
       "      <td>0.416667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LNCAP Abl</th>\n",
       "      <td>sgMDM4-2</td>\n",
       "      <td>0.011667</td>\n",
       "      <td>0.004041</td>\n",
       "      <td>0.028000</td>\n",
       "      <td>0.416667</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          Sample ID      mean       std  normalize  Normalized Cell Count\n",
       "cell line                                                                \n",
       "C42          sgGFP3  0.495800  0.080594   0.495800               1.000000\n",
       "C42          sgGFP4  0.547333  0.040664   0.495800               1.103940\n",
       "C42        sgMDM4-1  0.041410  0.009924   0.495800               0.083522\n",
       "C42        sgMDM4-2  0.035777  0.006549   0.495800               0.072159\n",
       "LNCAP        sgGFP3  0.161667  0.015825   0.161667               1.000000\n",
       "LNCAP        sgGFP4  0.175400  0.015762   0.161667               1.084948\n",
       "LNCAP      sgMDM4-1  0.054343  0.005991   0.161667               0.336144\n",
       "LNCAP      sgMDM4-2  0.053977  0.008041   0.161667               0.333876\n",
       "LNCAP 95     sgGFP3  0.130000  0.010000   0.130000               1.000000\n",
       "LNCAP 95     sgGFP4  0.123333  0.005774   0.130000               0.948718\n",
       "LNCAP 95   sgMDM4-1  0.056000  0.011790   0.130000               0.430769\n",
       "LNCAP 95   sgMDM4-2  0.050667  0.006658   0.130000               0.389744\n",
       "LNCAP Abl    sgGFP3  0.028000  0.006083   0.028000               1.000000\n",
       "LNCAP Abl    sgGFP4  0.024000  0.010817   0.028000               0.857143\n",
       "LNCAP Abl  sgMDM4-1  0.011667  0.004933   0.028000               0.416667\n",
       "LNCAP Abl  sgMDM4-2  0.011667  0.004041   0.028000               0.416667"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dd= dd.set_index('cell line')\n",
    "normalizing_frame = dd[dd['Sample ID']=='sgGFP3']['mean'].to_frame()\n",
    "normalizing_frame.columns=['normalize']\n",
    "normalizing_frame\n",
    "normalized_df = dd.join(normalizing_frame)\n",
    "normalized_df['Normalized Cell Count'] = normalized_df['mean']/normalized_df['normalize']\n",
    "normalized_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "sgGFP3\n",
      "sgGFP4\n",
      "sgMDM4-1\n",
      "sgMDM4-2\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1000x800 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "colors={\n",
    "    'sgGFP3':'#848484', \n",
    " 'sgGFP4':'#DCDCDC', \n",
    " 'sgMDM4-1':'#D58A85',\n",
    " 'sgMDM4-2':'#6B1D14', \n",
    "    \n",
    "}\n",
    "def grouped_barplot(df, cat,subcat, val , err):\n",
    "    u = df[cat].unique()\n",
    "    x = np.arange(len(u))\n",
    "    subx = df[subcat].unique()\n",
    "    offsets = (np.arange(len(subx))-np.arange(len(subx)).mean())/(len(subx)+1.)\n",
    "    width= np.diff(offsets).mean()\n",
    "    \n",
    "#     current_palette = sns.color_palette(\"Paired\")\n",
    "#     colors = {}\n",
    "#     for i, gr in enumerate(subx):\n",
    "#         if i>1:\n",
    "#             colors[gr] =current_palette[i+4]\n",
    "#         else:\n",
    "#             colors[gr] =current_palette[i+8]\n",
    "    \n",
    "    for i,gr in enumerate(subx):\n",
    "        print gr\n",
    "        dfg = df[df[subcat] == gr]\n",
    "        plt.bar(x+offsets[i], dfg[val].values, width=width, \n",
    "                label=\"{}\".format( gr), yerr=dfg[err].values, capsize=3.2, color=colors[gr], alpha=0.7)\n",
    "#     plt.xlabel(cat)\n",
    "    plt.ylabel(val, fontdict=dict(family='Arial', weight='bold', fontsize=12) )\n",
    "    plt.xticks(x, u)\n",
    "    plt.legend(framealpha=0.0, bbox_to_anchor=(1., 1.15), ncol=4, prop={'size': 8})\n",
    "    \n",
    "\n",
    "cat = \"cell line\"\n",
    "subcat = \"Sample ID\"\n",
    "val = \"Normalized Cell Count\"\n",
    "err = \"std\"\n",
    "fig, ax = plt.subplots(nrows=1, ncols=1, sharey=True, figsize=(5,4), dpi=200)\n",
    "grouped_barplot(normalized_df.reset_index(), cat, subcat, val, err )\n",
    "# plt.legend( framealpha=0.0, loc='upper center', ncol=4, prop={'size': 6})\n",
    "# plt.ylim(0,1.5)\n",
    "# plt.show()\n",
    "plt.yticks([0, 0.2, 0.4, 0.6, 0.8, 1.0])\n",
    "ax.spines['right'].set_visible(False)\n",
    "ax.spines['top'].set_visible(False)\n",
    "\n",
    "plt.savefig('CRISPR', dpi=200)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python [conda env:min_env]",
   "language": "python",
   "name": "conda-env-min_env-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.15"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
